package com.sistemadistribucion.controlador;
import interfaces.InterfazRemotaAdministracion;









import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import dto.Administracion.DTO_Rol;
import dto.Administracion.DTO_Usuario;
import dto.Encomienda.DTO_EncomiendaParticular;
import dto.Encomienda.DTO_Manifiesto;


public class BusinessDelegate {
	
	InterfazRemotaAdministracion objetoRemoto;
	private static BusinessDelegate instancia;
	
	private BusinessDelegate(){
		getStub();
	}
	
	public static BusinessDelegate getInstancia(){
		if(instancia==null)
			instancia = new BusinessDelegate();
		return instancia;
	}
	
	public boolean getStub(){
		try {
			objetoRemoto = (InterfazRemotaAdministracion) 
					Naming.lookup(InterfazRemotaAdministracion.url);
			
		return true;
			
		} catch (MalformedURLException e) {

			e.printStackTrace();
		} catch (RemoteException e) {

			e.printStackTrace();
		} catch (NotBoundException e) {

			e.printStackTrace();
		}
		
		return false;
	}

	
	//Usuarios-----------------------------------------------------------------
	
	// TODO Completar el metodo validarUsuario
	@SuppressWarnings("null")
	public DTO_Usuario validarUsuario(String usuario, String contrasena){
		DTO_Usuario usu = new DTO_Usuario(); // esto se carga con el RMI validarUsuario
		usu.setUsuario("pepe");
		usu.setPassword("pepe");
		List<DTO_Rol> roles = new ArrayList<DTO_Rol>();
		DTO_Rol rol = new DTO_Rol();
		rol.setId(1);
		roles.add(rol);
		usu.setRoles(roles);
		usu.setIdEmpleado(10);
		return usu;
	}


	@SuppressWarnings("null")
	public Integer pagarFacturaClientePaticular(Integer id){
		//llamar al metodo que paga la faturaCliente particular
		Integer salida;
		
		salida = 12341;
		
		return salida;
	}
	

	@SuppressWarnings("null")
	public String obtenerSucursalEmpleado(Integer idEmpleado){
		//llamo por RMI a una funcion que con el numero de idEmpleado me da el idSucursal
		String idSucursal;
		idSucursal = "1010";
		return idSucursal;
	}
	
	@SuppressWarnings("null")
	public String nuevaEncomienda(String idSucursal){
		//llamo por RMI a una funcion que con el numero de idEmpleado me da el idSucursal
		
		String idEncomienda;
		//idEncomienda = nuevaEncomiendaRMI(idSucursal);
		idEncomienda = "40";
		
		return idEncomienda;
	}	

	public void confirmarEncomiendaParticular(DTO_EncomiendaParticular e){
		//llamo por RMI a una funcion que crea la encomienda particular
		//confirmarEncomiendaParticular(idSucursal);

	}	

	public Integer altaManifiesto(DTO_Manifiesto m){
		
		Integer idManifiesto;
		
		//llamo por RMI a una funcion que crea el manifiesto y me da el id
		//idManifiesto = altaManifiesto(m);
		
		idManifiesto = 70;
		
		return idManifiesto;
	}		
	
	
	
	//Clientes-----------------------------------------------------------------
	
	// TODO Completar el metodo	altaCliente
	public boolean altaCliente(dto.Cliente.DTO_Cliente cliente){
		boolean resp = false;
		return true;
	}
	
	// TODO Completar el metodo	agregarDireccionEntrega
	public boolean agregarDireccionEntrega(int idCliente, dto.Cliente.DTO_DireccionEntrega direccionEntrega){
		boolean resp = false;
		return true;
	}


	
	
}
